//
//  HMLoginViewController.swift
//  XinLangWeibo10
//
//  Created by 白利兵 on 15/10/16.
//  Copyright © 2015年 itheima. All rights reserved.
//

import UIKit
import SVProgressHUD
class HMLoginViewController: UIViewController,UIWebViewDelegate {
    // 懒加载webView
    private var webView :UIWebView = UIWebView();
    override func viewDidLoad() {
        super.viewDidLoad()
        // 加载网络文件
        self.webView.loadRequest(NSURLRequest(URL: NetworkTools.sharedTools.oauthURL))
        view.backgroundColor = UIColor.whiteColor()
    }
    override func loadView() {
        super.loadView()
        view = webView
        // 设置代理
        webView.delegate = self
        title = "登录新浪微博"
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "关闭", style: .Plain, target: self, action: "close")
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "自动填充", style: .Plain, target: self, action: "fillAuto")
    }

}
// MARK: - 登录和自动填充
extension HMLoginViewController {
    // 关闭当前控制器  @objc的作用是让Xcode在编译时知道这个方法，不然运行时访问不到这个方法
        @objc private func close() {
        dismissViewControllerAnimated(true, completion: nil)
    }
    // 自动填充
    @objc private func fillAuto() {
        print("自动填充")
        // js注入
        let js = "document.getElementById('userId').value = '377033028@qq.com';" +
        "document.getElementById('passwd').value = '6752082';"
        
        // 让 webView 执行 js
        webView.stringByEvaluatingJavaScriptFromString(js)
    }
}
// MARK: - 获取网络请求的内容
extension HMLoginViewController {
     func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        
        // 目标：如果是百度，就不加载
        // 1. 判断访问的主机是否是 www.baidu.com
        guard let url = request.URL where url.host == "www.baidu.com" else {
            return true
        }
        
        // 2. 从百度地址的 url 中提取 `code=` 是否存在
        guard let query = url.query where query.hasPrefix("code=") else {
            print("取消授权")
            
            return false
        }
        
        // 3. 从 query 字符串中提取 `code=` 后面的授权码
        let code = query.substringFromIndex("code=".endIndex)
        
        //print(query)
        print("授权码是 " + code)
        
        // 4. 加载accessToken
        UserAccountViewModel.shareUserAccount.loadAccessToke(code) { (isSuccessed) -> () in
            if !isSuccessed {
                SVProgressHUD.showInfoWithStatus("您的网络不给力")
                
                delay(0.5) { self.close() }
                
                return
            }
            
            print("成功了")
            // dismissViewControllerAnimated 方法不会立即将控制器销毁
            self.dismissViewControllerAnimated(false) {
                
                // 停止指示器
                SVProgressHUD.dismiss()
                
                // 通知中心是同步的 - 一旦发送通知，会先执行监听方法，直接结束后，才执行后续代码
                NSNotificationCenter.defaultCenter().postNotificationName(WBNotificationSwithRootView, object: "welcom")
            }

        }
        return false
    }
}


